
// MIT License
// 
// Copyright (c) 2009-2017 Luca Piccioni
// 
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
// 
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
// 
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
// 
// This file is automatically generated

#pragma warning disable 649, 1572, 1573

// ReSharper disable RedundantUsingDirective
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
using System.Security;
using System.Text;

using Khronos;

// ReSharper disable CheckNamespace
// ReSharper disable InconsistentNaming
// ReSharper disable JoinDeclarationAndInitializer

namespace OpenGL
{
	public partial class Gl
	{
		/// <summary>
		/// [GL] Value of GL_PER_GPU_STORAGE_BIT_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_gpu_multicast")]
		[Log(BitmaskName = "GL")]
		public const int PER_GPU_STORAGE_BIT_NV = 0x0800;

		/// <summary>
		/// [GL] Value of GL_MULTICAST_GPUS_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_gpu_multicast")]
		public const int MULTICAST_GPUS_NV = 0x92BA;

		/// <summary>
		/// [GL] Value of GL_RENDER_GPU_MASK_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_gpu_multicast")]
		public const int RENDER_GPU_MASK_NV = 0x9558;

		/// <summary>
		/// [GL] Value of GL_PER_GPU_STORAGE_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_gpu_multicast")]
		public const int PER_GPU_STORAGE_NV = 0x9548;

		/// <summary>
		/// [GL] Value of GL_MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV symbol.
		/// </summary>
		[RequiredByFeature("GL_NV_gpu_multicast")]
		public const int MULTICAST_PROGRAMMABLE_SAMPLE_LOCATION_NV = 0x9549;

		/// <summary>
		/// [GL] glRenderGpuMaskNV: Binding for glRenderGpuMaskNV.
		/// </summary>
		/// <param name="mask">
		/// A <see cref="T:uint"/>.
		/// </param>
		[RequiredByFeature("GL_NV_gpu_multicast")]
		public static void RenderGpuMaskNV(uint mask)
		{
			Debug.Assert(Delegates.pglRenderGpuMaskNV != null, "pglRenderGpuMaskNV not implemented");
			Delegates.pglRenderGpuMaskNV(mask);
			LogCommand("glRenderGpuMaskNV", null, mask			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glMulticastBufferSubDataNV: Binding for glMulticastBufferSubDataNV.
		/// </summary>
		/// <param name="gpuMask">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="buffer">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:IntPtr"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:IntPtr"/>.
		/// </param>
		[RequiredByFeature("GL_NV_gpu_multicast")]
		public static void MulticastBufferSubDataNV(uint gpuMask, uint buffer, IntPtr offset, uint size, IntPtr data)
		{
			unsafe {
				{
					Debug.Assert(Delegates.pglMulticastBufferSubDataNV != null, "pglMulticastBufferSubDataNV not implemented");
					Delegates.pglMulticastBufferSubDataNV(gpuMask, buffer, offset, size, data.ToPointer());
					LogCommand("glMulticastBufferSubDataNV", null, gpuMask, buffer, offset, size, data					);
				}
			}
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glMulticastBufferSubDataNV: Binding for glMulticastBufferSubDataNV.
		/// </summary>
		/// <param name="gpuMask">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="buffer">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="offset">
		/// A <see cref="T:IntPtr"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="data">
		/// A <see cref="T:object"/>.
		/// </param>
		[RequiredByFeature("GL_NV_gpu_multicast")]
		public static void MulticastBufferSubDataNV(uint gpuMask, uint buffer, IntPtr offset, uint size, object data)
		{
			GCHandle pin_data = GCHandle.Alloc(data, GCHandleType.Pinned);
			try {
				MulticastBufferSubDataNV(gpuMask, buffer, offset, size, pin_data.AddrOfPinnedObject());
			} finally {
				pin_data.Free();
			}
		}

		/// <summary>
		/// [GL] glMulticastCopyBufferSubDataNV: Binding for glMulticastCopyBufferSubDataNV.
		/// </summary>
		/// <param name="readGpu">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="writeGpuMask">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="readBuffer">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="writeBuffer">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="readOffset">
		/// A <see cref="T:IntPtr"/>.
		/// </param>
		/// <param name="writeOffset">
		/// A <see cref="T:IntPtr"/>.
		/// </param>
		/// <param name="size">
		/// A <see cref="T:uint"/>.
		/// </param>
		[RequiredByFeature("GL_NV_gpu_multicast")]
		public static void MulticastCopyBufferSubDataNV(uint readGpu, uint writeGpuMask, uint readBuffer, uint writeBuffer, IntPtr readOffset, IntPtr writeOffset, uint size)
		{
			Debug.Assert(Delegates.pglMulticastCopyBufferSubDataNV != null, "pglMulticastCopyBufferSubDataNV not implemented");
			Delegates.pglMulticastCopyBufferSubDataNV(readGpu, writeGpuMask, readBuffer, writeBuffer, readOffset, writeOffset, size);
			LogCommand("glMulticastCopyBufferSubDataNV", null, readGpu, writeGpuMask, readBuffer, writeBuffer, readOffset, writeOffset, size			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glMulticastCopyImageSubDataNV: Binding for glMulticastCopyImageSubDataNV.
		/// </summary>
		/// <param name="srcGpu">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="dstGpuMask">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="srcName">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="srcTarget">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="srcLevel">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="srcX">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="srcY">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="srcZ">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="dstName">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="dstTarget">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="dstLevel">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="dstX">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="dstY">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="dstZ">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="srcWidth">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="srcHeight">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="srcDepth">
		/// A <see cref="T:int"/>.
		/// </param>
		[RequiredByFeature("GL_NV_gpu_multicast")]
		public static void MulticastCopyImageSubDataNV(uint srcGpu, uint dstGpuMask, uint srcName, int srcTarget, int srcLevel, int srcX, int srcY, int srcZ, uint dstName, int dstTarget, int dstLevel, int dstX, int dstY, int dstZ, int srcWidth, int srcHeight, int srcDepth)
		{
			Debug.Assert(Delegates.pglMulticastCopyImageSubDataNV != null, "pglMulticastCopyImageSubDataNV not implemented");
			Delegates.pglMulticastCopyImageSubDataNV(srcGpu, dstGpuMask, srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth);
			LogCommand("glMulticastCopyImageSubDataNV", null, srcGpu, dstGpuMask, srcName, srcTarget, srcLevel, srcX, srcY, srcZ, dstName, dstTarget, dstLevel, dstX, dstY, dstZ, srcWidth, srcHeight, srcDepth			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glMulticastBlitFramebufferNV: Binding for glMulticastBlitFramebufferNV.
		/// </summary>
		/// <param name="srcGpu">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="dstGpu">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="srcX0">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="srcY0">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="srcX1">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="srcY1">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="dstX0">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="dstY0">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="dstX1">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="dstY1">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="mask">
		/// A <see cref="T:ClearBufferMask"/>.
		/// </param>
		/// <param name="filter">
		/// A <see cref="T:int"/>.
		/// </param>
		[RequiredByFeature("GL_NV_gpu_multicast")]
		public static void MulticastBlitFramebufferNV(uint srcGpu, uint dstGpu, int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, ClearBufferMask mask, int filter)
		{
			Debug.Assert(Delegates.pglMulticastBlitFramebufferNV != null, "pglMulticastBlitFramebufferNV not implemented");
			Delegates.pglMulticastBlitFramebufferNV(srcGpu, dstGpu, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, (uint)mask, filter);
			LogCommand("glMulticastBlitFramebufferNV", null, srcGpu, dstGpu, srcX0, srcY0, srcX1, srcY1, dstX0, dstY0, dstX1, dstY1, mask, filter			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glMulticastFramebufferSampleLocationsfvNV: Binding for glMulticastFramebufferSampleLocationsfvNV.
		/// </summary>
		/// <param name="gpu">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="framebuffer">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="start">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="count">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="v">
		/// A <see cref="T:float[]"/>.
		/// </param>
		[RequiredByFeature("GL_NV_gpu_multicast")]
		public static void MulticastFramebufferSampleLocationsfvNV(uint gpu, uint framebuffer, uint start, int count, float[] v)
		{
			unsafe {
				fixed (float* p_v = v)
				{
					Debug.Assert(Delegates.pglMulticastFramebufferSampleLocationsfvNV != null, "pglMulticastFramebufferSampleLocationsfvNV not implemented");
					Delegates.pglMulticastFramebufferSampleLocationsfvNV(gpu, framebuffer, start, count, p_v);
					LogCommand("glMulticastFramebufferSampleLocationsfvNV", null, gpu, framebuffer, start, count, v					);
				}
			}
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glMulticastBarrierNV: Binding for glMulticastBarrierNV.
		/// </summary>
		[RequiredByFeature("GL_NV_gpu_multicast")]
		public static void MulticastBarrierNV()
		{
			Debug.Assert(Delegates.pglMulticastBarrierNV != null, "pglMulticastBarrierNV not implemented");
			Delegates.pglMulticastBarrierNV();
			LogCommand("glMulticastBarrierNV", null			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glMulticastWaitSyncNV: Binding for glMulticastWaitSyncNV.
		/// </summary>
		/// <param name="signalGpu">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="waitGpuMask">
		/// A <see cref="T:uint"/>.
		/// </param>
		[RequiredByFeature("GL_NV_gpu_multicast")]
		public static void MulticastWaitSyncNV(uint signalGpu, uint waitGpuMask)
		{
			Debug.Assert(Delegates.pglMulticastWaitSyncNV != null, "pglMulticastWaitSyncNV not implemented");
			Delegates.pglMulticastWaitSyncNV(signalGpu, waitGpuMask);
			LogCommand("glMulticastWaitSyncNV", null, signalGpu, waitGpuMask			);
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glMulticastGetQueryObjectivNV: Binding for glMulticastGetQueryObjectivNV.
		/// </summary>
		/// <param name="gpu">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="id">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:int[]"/>.
		/// </param>
		[RequiredByFeature("GL_NV_gpu_multicast")]
		public static void MulticastGetQueryObjectivNV(uint gpu, uint id, int pname, int[] @params)
		{
			unsafe {
				fixed (int* p_params = @params)
				{
					Debug.Assert(Delegates.pglMulticastGetQueryObjectivNV != null, "pglMulticastGetQueryObjectivNV not implemented");
					Delegates.pglMulticastGetQueryObjectivNV(gpu, id, pname, p_params);
					LogCommand("glMulticastGetQueryObjectivNV", null, gpu, id, pname, @params					);
				}
			}
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glMulticastGetQueryObjectuivNV: Binding for glMulticastGetQueryObjectuivNV.
		/// </summary>
		/// <param name="gpu">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="id">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:uint[]"/>.
		/// </param>
		[RequiredByFeature("GL_NV_gpu_multicast")]
		public static void MulticastGetQueryObjectuivNV(uint gpu, uint id, int pname, uint[] @params)
		{
			unsafe {
				fixed (uint* p_params = @params)
				{
					Debug.Assert(Delegates.pglMulticastGetQueryObjectuivNV != null, "pglMulticastGetQueryObjectuivNV not implemented");
					Delegates.pglMulticastGetQueryObjectuivNV(gpu, id, pname, p_params);
					LogCommand("glMulticastGetQueryObjectuivNV", null, gpu, id, pname, @params					);
				}
			}
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glMulticastGetQueryObjecti64vNV: Binding for glMulticastGetQueryObjecti64vNV.
		/// </summary>
		/// <param name="gpu">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="id">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:long[]"/>.
		/// </param>
		[RequiredByFeature("GL_NV_gpu_multicast")]
		public static void MulticastGetQueryObjecti64vNV(uint gpu, uint id, int pname, long[] @params)
		{
			unsafe {
				fixed (long* p_params = @params)
				{
					Debug.Assert(Delegates.pglMulticastGetQueryObjecti64vNV != null, "pglMulticastGetQueryObjecti64vNV not implemented");
					Delegates.pglMulticastGetQueryObjecti64vNV(gpu, id, pname, p_params);
					LogCommand("glMulticastGetQueryObjecti64vNV", null, gpu, id, pname, @params					);
				}
			}
			DebugCheckErrors(null);
		}

		/// <summary>
		/// [GL] glMulticastGetQueryObjectui64vNV: Binding for glMulticastGetQueryObjectui64vNV.
		/// </summary>
		/// <param name="gpu">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="id">
		/// A <see cref="T:uint"/>.
		/// </param>
		/// <param name="pname">
		/// A <see cref="T:int"/>.
		/// </param>
		/// <param name="params">
		/// A <see cref="T:ulong[]"/>.
		/// </param>
		[RequiredByFeature("GL_NV_gpu_multicast")]
		public static void MulticastGetQueryObjectui64vNV(uint gpu, uint id, int pname, ulong[] @params)
		{
			unsafe {
				fixed (ulong* p_params = @params)
				{
					Debug.Assert(Delegates.pglMulticastGetQueryObjectui64vNV != null, "pglMulticastGetQueryObjectui64vNV not implemented");
					Delegates.pglMulticastGetQueryObjectui64vNV(gpu, id, pname, p_params);
					LogCommand("glMulticastGetQueryObjectui64vNV", null, gpu, id, pname, @params					);
				}
			}
			DebugCheckErrors(null);
		}

		internal static unsafe partial class Delegates
		{
			[RequiredByFeature("GL_NV_gpu_multicast")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glRenderGpuMaskNV(uint mask);

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[ThreadStatic]
			internal static glRenderGpuMaskNV pglRenderGpuMaskNV;

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glMulticastBufferSubDataNV(uint gpuMask, uint buffer, IntPtr offset, uint size, void* data);

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[ThreadStatic]
			internal static glMulticastBufferSubDataNV pglMulticastBufferSubDataNV;

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glMulticastCopyBufferSubDataNV(uint readGpu, uint writeGpuMask, uint readBuffer, uint writeBuffer, IntPtr readOffset, IntPtr writeOffset, uint size);

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[ThreadStatic]
			internal static glMulticastCopyBufferSubDataNV pglMulticastCopyBufferSubDataNV;

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glMulticastCopyImageSubDataNV(uint srcGpu, uint dstGpuMask, uint srcName, int srcTarget, int srcLevel, int srcX, int srcY, int srcZ, uint dstName, int dstTarget, int dstLevel, int dstX, int dstY, int dstZ, int srcWidth, int srcHeight, int srcDepth);

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[ThreadStatic]
			internal static glMulticastCopyImageSubDataNV pglMulticastCopyImageSubDataNV;

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glMulticastBlitFramebufferNV(uint srcGpu, uint dstGpu, int srcX0, int srcY0, int srcX1, int srcY1, int dstX0, int dstY0, int dstX1, int dstY1, uint mask, int filter);

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[ThreadStatic]
			internal static glMulticastBlitFramebufferNV pglMulticastBlitFramebufferNV;

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glMulticastFramebufferSampleLocationsfvNV(uint gpu, uint framebuffer, uint start, int count, float* v);

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[ThreadStatic]
			internal static glMulticastFramebufferSampleLocationsfvNV pglMulticastFramebufferSampleLocationsfvNV;

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glMulticastBarrierNV();

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[ThreadStatic]
			internal static glMulticastBarrierNV pglMulticastBarrierNV;

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glMulticastWaitSyncNV(uint signalGpu, uint waitGpuMask);

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[ThreadStatic]
			internal static glMulticastWaitSyncNV pglMulticastWaitSyncNV;

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glMulticastGetQueryObjectivNV(uint gpu, uint id, int pname, int* @params);

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[ThreadStatic]
			internal static glMulticastGetQueryObjectivNV pglMulticastGetQueryObjectivNV;

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glMulticastGetQueryObjectuivNV(uint gpu, uint id, int pname, uint* @params);

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[ThreadStatic]
			internal static glMulticastGetQueryObjectuivNV pglMulticastGetQueryObjectuivNV;

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glMulticastGetQueryObjecti64vNV(uint gpu, uint id, int pname, long* @params);

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[ThreadStatic]
			internal static glMulticastGetQueryObjecti64vNV pglMulticastGetQueryObjecti64vNV;

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[SuppressUnmanagedCodeSecurity]
			internal delegate void glMulticastGetQueryObjectui64vNV(uint gpu, uint id, int pname, ulong* @params);

			[RequiredByFeature("GL_NV_gpu_multicast")]
			[ThreadStatic]
			internal static glMulticastGetQueryObjectui64vNV pglMulticastGetQueryObjectui64vNV;

		}
	}

}
